package repository

import "sen-golang-study/go_game_study/hero_story_go_server/game_server/internal/domain/session/entity"

// SessionRepository 会话仓储接口
type SessionRepository interface {
	// Save 保存会话
	Save(session *entity.Session) error

	// GetBySessionID 根据会话ID获取会话
	GetBySessionID(sessionID string) (*entity.Session, error)

	// GetByUserID 根据用户ID获取会话
	GetByUserID(userID uint32) (*entity.Session, error)

	// Update 更新会话
	Update(session *entity.Session) error

	// Delete 删除会话
	Delete(sessionID string) error

	// GetActiveSessions 获取所有活跃会话
	GetActiveSessions() ([]*entity.Session, error)

	// GetExpiredSessions 获取过期会话
	GetExpiredSessions(timeoutMs int64) ([]*entity.Session, error)

	// CleanExpiredSessions 清理过期会话
	CleanExpiredSessions(timeoutMs int64) error

	// GetSessionCount 获取会话总数
	GetSessionCount() (int, error)

	// GetActiveSessionCount 获取活跃会话数
	GetActiveSessionCount() (int, error)
}